package com.ai.faceCompare.domain.dto;

/**
 * ClassName:    XfFaceResponseDTO
 * Description:  TODO
 * Author:       yuzx
 * Date:         2025/9/7 18:37
 * Version:      1.0
 **/
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import lombok.Data;

/**
 * 讯飞人脸比对API响应DTO（修正字段映射）
 */
public class XfFaceResponseDTO {

    /**
     * 整体响应体
     */
    @Data
    public static class ResponseBody {
        private XfResponseHeader header;
        private XfResponsePayload payload;
    }

    /**
     * 响应头（无修改）
     */
    @Data
    public static class XfResponseHeader {
        private Integer code; // 0=成功
        private String message;
        private String sid;
    }

    /**
     * 响应数据（修正字段映射：face_compare_result → faceCompareResult）
     */
    @Data
    public static class XfResponsePayload {
        // 关键修正：用@SerializedName映射讯飞的下划线字段
        @SerializedName("face_compare_result")
        private XfFaceCompareResult faceCompareResult; // 驼峰字段名

        /**
         * 人脸比对结果（对应讯飞的face_compare_result）
         */
        @Data
        public static class XfFaceCompareResult {
            private String compress;
            private String encoding;
            private String format;
            private String text; // 核心：Base64编码的比对结果
            // 讯飞可能返回的额外字段（如seq、status），按需添加
            private String seq;
            private String status;
        }
    }

    /**
     * text字段Base64解码后的结果（与官方文档一致，修正字段名：score）
     */
    @Data
    public static class XfCompareResultText {
        private Integer ret; // 0=比对成功（官方文档字段）
        private Double score; // 相似度（官方文档字段：score，非similarity！）
        private String error_msg; // 错误信息（若有）
    }
}